//
//  MainTabBar.swift
//  Sinaweibo
//
//  Created by 谌桃 on 15/11/28.
//  Copyright © 2015年 ryan.chen. All rights reserved.
//

import UIKit

class MainTabBar: UITabBar {

    //重写实现了 init(frame:)方法, 默认就只能通过手码创建
    override init(frame: CGRect) {
        
        super.init(frame: frame)
        
        setupBtn()
    }

    //xib/sb创建
    required init?(coder aDecoder: NSCoder) {
        
        //将通过xib/sb注册报错的注释掉, 这样可以即支持手码创建, 也支持xib/sb创建
//        fatalError("init(coder:) has not been implemented")
        
        super.init(coder: aDecoder)
        
        setupBtn()
    }
    
    private func setupBtn(){
        
        //将编辑button添加到tabBar
        addSubview(button)
    }
    
    
    //懒加载, 编辑button
    lazy var button:UIButton = {
        
        let btn = UIButton()
        
        btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        
        btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState:.Selected)
        
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: .Normal)
        
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: .Highlighted)
        
        //设置btn的大小, 大小根据按钮图片的大小确定, 不设置就没有显示
        btn.sizeToFit()
        
        return btn
        }()
    

    //布局子控件
    override func layoutSubviews() {
        
        //必须调用父类的方法, 否则tabBar上面的子控制器就是透明的, 无法设置frame
        super.layoutSubviews()
        
        let y:CGFloat = 0
        let x:CGFloat = 0
        let w:CGFloat = width / 5
        let h:CGFloat = self.bounds.height
        
        let rect = CGRectMake(x, y, w, h)
        
        var index:CGFloat = 0
        
        for tabBarButton in subviews{
            
        //UITabBarButton是个私有类, 需要通过名称取出类, 设置控件frame
            //NSClassFromString是个可选类型
          if tabBarButton.isKindOfClass(NSClassFromString("UITabBarButton")!) {
        
            //设置frame的偏移量
            tabBarButton.frame = CGRectOffset(rect, w * index, 0)
            
            //三目运算符, 注意空格, 不然报错
            index += (index==1 ? 2 : 1)
            
            }
        }
        
        //设置btn的frame
        button.frame = CGRectOffset(rect, w * 2, 0)
    }
}
